const objectUtil = {
    // 判断两个对象是否相等
    equal(objA, objB) {
        if ( objB === undefined || objA === undefined ) {
            throw new Error("判断对象不能为undefined");
        }
        if ( objB === null || objA === null ) {
            throw new Error("判断对象不能为null");
        }
        // 获取属性数组
        let aProps = Object.getOwnPropertyNames(objA);
        let bProps = Object.getOwnPropertyNames(objB);

        // 如果属性长度不一样, 则两各对象必然不一样
        if (aProps.length !== bProps.length) {
            return false;
        }

        // 判断对应的属性值是否相等, 这里对于Array, Object等负责对象的判断可能不合适
        for (let i = 0; i < aProps.length; i++) {
            let propName = aProps[i];
            let propA = objA[propName];
            let propB = objB[propName];
            if (propA !== propB) {
                return false;
            }
        }
        return true;
    }
}

export {
    objectUtil
}